package service;

import dto.AmDto;
import entity.Node;
import entity.Reference;

/**
 * 业务逻辑层
 * 
 * @author raymondwong
 *
 */
public class AmService {

  /**
   * 数据传输元
   */
  private AmDto amDto = null;

  /**
   * 默认构造函数
   * 
   * @param amDto
   *          数据传输元
   */
  public AmService(AmDto amDto) {
    this.amDto = amDto;
    // TODO 完善构造函数
  }

  /**
   * 添加节点
   * 
   * @param newNode 需要添加进树的节点
   * @param leftBro
   *          为树中原本存在的节点,在该节点后面插入一个新的子节点 该节点用于定位新节点的位置
   * @return 是否添加成功
   */
  public boolean addNode(Node newNode, Node leftBro) {
    // TODO 向dto中的Tree对象中添加一个空白节点
    return false;
  }

  /**
   * 从树中删除一个节点
   * 
   * @param node 需要删除的节点对象
   * @return 是否删除节点成功
   */
  public boolean removeNode(Node node) {
    // TODO 删除参数中的节点
    return false;
  }

  /**
   * 移动树中的node节点到leftBro的后面,作为leftBro节点的第一个右兄弟
   * 
   * @param node 需要移动的节点
   * @param leftBro 定位节点
   * @return 是否移动成功
   */
  public boolean moveNode(Node node, Node leftBro) {
    // TODO 移动参数中的节点到新的位置
    return false;
  }
  
  /**
   * 导出项目成pdf或者doc格式
   * 
   * @param type 导出的格式
   * @return 根据节点内容生成的文章字符串
   */
  public String export(String type) {
    // TODO 从dto中获取树信息并根据参数中输入的格式转换成对应的文章字符串
    return null;
  }
  
  /**
   * 检索句子函数
   * 
   * @param sentence 等待检索的句子
   * @return 检索到的出处,返回一个reference对象
   */
  public Reference search(String sentence) {
    // TODO 检索dto中待检索句子队列中的句子,并将检索结果存入dto中检索结果哈希map中
    return null;
  }

}
